package com.zmn.plat.business.interfaces.pic;

import java.io.File;
import java.io.InputStream;

import com.zmn.common.dto.AliyunOssStsDTO;
import com.zmn.common.dto.ResultDTO;

/**
 * @author duanzuocai
 * @version v1.0
 * @类说明：阿里云 OSS 图片上传
 * @图片访问路经：https://img1.xiujiadian.com/dev/sm/order/04481230.jpg
 * @since 2018/11/20 10:57
 */
public interface PicUploadBService {

    /**
     * 上传文件
     *
     * @param directory
     *            文件目录
     * @param fileName
     *            文件名
     * @param file
     *            上传图片文件
     * @return
     */
    ResultDTO uploadPic(String directory, String fileName, File file);

    /**
     * 上传文件
     *
     * @param directory
     *            文件目录
     * @param fileName
     *            文件名
     * @param file
     *            上传图片文件
     * @param maxWidth
     *            最大宽度：像素，可以为空，不限制大小
     * @param maxHeight
     *            最大高度：像素，可以为空，不限制大小
     * @return
     */
    ResultDTO uploadPic(String directory, String fileName, File file, Integer maxWidth, Integer maxHeight);

    /**
     * 上传文件
     *
     * @param directory
     *            文件目录
     * @param fileName
     *            文件名
     * @param inputStream
     *            上传图片文件流
     * @return
     */
    ResultDTO uploadPic(String directory, String fileName, InputStream inputStream);

    /**
     * 上传文件 - 不压缩
     *
     * @param directory
     *            文件目录
     * @param fileName
     *            文件名
     * @param inputStream
     *            上传图片文件流
     * @return
     */
    ResultDTO uploadPicUnpressed(String directory, String fileName, InputStream inputStream);

    /**
     * 上传文件
     *
     * @param directory
     *            文件目录
     * @param fileName
     *            文件名
     * @param inputStream
     *            上传图片文件流
     * @return
     */
    ResultDTO uploadFile(String directory, String fileName, InputStream inputStream);

    /**
     * 上传文件
     *
     * @param directory
     *            文件目录
     * @param fileName
     *            文件名
     * @param inputStream
     *            上传图片文件流
     * @param maxWidth
     *            最大宽度：像素，可以为空，不限制大小
     * @param maxHeight
     *            最大高度：像素，可以为空，不限制大小
     * @return
     */
    ResultDTO uploadPic(String directory, String fileName, InputStream inputStream, Integer maxWidth, Integer maxHeight);

    /**
     * 获取图片 Url
     *
     * @param directory
     *            文件目录
     * @param fileName
     *            文件名
     * @return 比如：
     */
    String getPicUrl(String directory, String fileName);

    /**
     * 获取文件 Url
     *
     * @param directory
     *            文件目录
     * @param fileName
     *            文件名
     * @return 比如：
     */
    String getFileUrl(String directory, String fileName);

    /**
     * 获取文件上传临时权限 有效期两小时
     *
     * @param serviceId
     *            服务ID，用于统计
     * @return
     */
    AliyunOssStsDTO getStsAuther(String serviceId);
}
